package com.scott.crm.resume.service;


import com.scott.crm.resume.bean.QuestionBean;
import org.springframework.stereotype.Service;

import java.util.ArrayList;

/**
 * @author 黄德标
 * @date 2021/11/23 16:58
 */
public interface QuestionService {

    /**
     * 方法描述: 新增一个面试问题
     * @author: 黄德标
     * @date: 2021/11/20 19:37
     * @params: [QuestionBean]
     * @returns: 返回1 则添加成功
     */
    Integer addQuestion(QuestionBean questionBean);

    /**
     * 方法描述: 【老师】 填写 学生的面试问题 的老师答案
     * @author: 黄德标
     * @date: 2021/11/29 21:03
     * @param: QuestionBean对象必须有id、teacherAnswer、token属性
     */
    Integer addQuestionTeacherAnswer(QuestionBean questionBean);

    /**
     * 方法描述: 根据面试问题的ID，从面试问题表中删除一条记录
     * @author: 黄德标
     * @date: 2021/11/20 21:01
     * @params: questionBean对象 必须有id、token
     * @returns:
     * 返回-1：身份验证失败，token有误
     * 返回1： 删除成功
     */
    Integer deleteQuestionByQuestionId(QuestionBean questionBean);

    /**
     * 方法描述: 根据 questionEntity参数中的 ID 进行修改内容（只能更新面试问题和学生的回答）
     * @author: 黄德标
     * @date: 2021/11/20 20:41
     * @params: [QuestionBean]
     * @returns: 返回1 则修改成功
     */
    Integer updateQuestion(QuestionBean questionBean);


    /**
     * 方法描述: 根据 ID 查询 面试问题表中的记录
     * @author: 黄德标
     * @date: 2021/11/20 21:21
     * @params: [QuestionId]
     * @returns: QuestionBean对象
     */
    QuestionBean selectQuestionBeanByQuestionId(Integer QuestionId);

    /**
     * 方法描述: 根据 resumeID 查询 面试问题表中的记录
     * @author: 黄德标
     * @date: 2021/11/20 21:49
     * @params: [resumeId]
     * @returns: 装有QuestionBean对象的集合
     */
    ArrayList<QuestionBean> selectQuestionBeanByResumeId(Integer resumeId);

    /**
     * 方法描述: 根据 studentId 查询 面试问题表中的记录
     * @author: 黄德标
     * @date: 2021/11/20 22:00
     * @params: [studentId]
     * @returns: 装有QuestionBean对象的集合
     */
    ArrayList<QuestionBean> selectQuestionBeanByStudentId(Integer studentId);

    /**
     * 方法描述: 根据 学生的班级ID 查询 此班 所有的学生 的面试问题表中的记录
     * @author: 黄德标
     * @date: 2021/11/20 22:23
     * @params: [classId]
     * @returns: 装有QuestionBean对象的集合
     */
    ArrayList<QuestionBean> selectQuestionBeanByClassId(Integer classId);

    /**
     * 方法描述: 根据 学生的班级ID 查询 此班 所有的学生 的面试问题表中的记录
     * @author: 黄德标
     * @date: 2021/11/20 22:23
     * @params: [classId]
     * @returns: 装有QuestionBean对象的集合
     */
    ArrayList<QuestionBean> selectQuestionBeanByTeacherId(Integer teacherId);



    /**
     * 方法描述: 根据 班级ID 查询 此班 所有的学生 的面试问题表中 老师还未填写答案 的记录
     * @author: 黄德标
     * @date: 2021/11/21 15:35
     * @params: [classId]
     * @returns: 装有QuestionBean对象的集合
     */
    ArrayList<QuestionBean> selectNullTeacherAnswerQuestionBeanByClassId(Integer classId);

    /**
     * 方法描述: 根据 老师ID 查询 已经填写过答案 的面试问题表中的记录
     * @author: 黄德标
     * @date: 2021/11/21 15:20
     * @params: [teacherId]
     * @returns: QuestionBean
     */
    ArrayList<QuestionBean> selectNotNullTeacherAnswerQuestionBeanByClassId(Integer teacherId);

    /**
     * 方法描述: 查询 面试问题表 所有记录
     * @author: 黄德标
     * @date: 2021/11/20 22:22
     * @returns: 装有QuestionBean对象的集合
     */
    ArrayList<QuestionBean> selectAll();


    // ====================================================================

    /**
     * 方法描述: 查询 用户的班级【老师学生通用】
     * @author: 黄德标
     * @date: 2021/11/29 20:39
     * @param: [java.lang.Integer]
     * @return: java.lang.Integer
     */
    Integer selectClassIdByUserId(Integer userId);

    /**
     * 方法描述: 查询 用户的班级的 所有面试问题
     * @author: 黄德标
     * @date: 2021/11/29 20:47
     * @param: [java.lang.Integer]
     * @return: 装有QuestionBean对象的集合
     */
    ArrayList<QuestionBean> selectQuestionBeanByUserId(Integer userId);


}
